#include <stdio.h>

int n;
int di[6];  // 保存指定数的每个位
int flag;   // 起始时假设，不存在满足要求的数字
// flag = 0 --> 不存在满足要求的数字
// flag = 1 --> 存在满足要求的数字

// 判断 x 是不是满足要求
int judge(int x) {
    // 分离 x 的每个位
    int sum = 0;
    int m = 0;
    while(x) {
        di[m++] = x % 10;
        sum = sum + x % 10;
        x = x / 10;
    }
    
    if(sum != n) {
        return 0;
    }

    // 判断 x 是不是回文数
    // 判断数组 di 是不是回文数数组
    for(int i = 0; i < m/2; i++) {
        if(di[i] != di[m-1-i]) {
            return 0;
        }
    }
    
    return 1;
}

int main()
{
    scanf("%d", &n);
    
    for(int i = 10000; i <= 999999; i++) {
        // 判断 i 是不是满足要求的数据
        if(judge(i)) {
            printf("%d\n", i);
            flag = 1;
        }
    }

    if(flag == 0) {
        printf("-1\n");
    }

    return 0;
}

